package com.IUT.biblio.model;

import java.io.Serializable;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.Vector;

public class Ouvrage implements Serializable {
	private static final long serialVersionUID = 1L;
	private String titre;
	private String editeur;
	private GregorianCalendar dateEdition;
	private String ISBN;
	private Public public_1;
	private HashMap<String, Exemplaire> exemplaire = new HashMap<String, Exemplaire>();
	private Vector<Auteur> auteur = new Vector<Auteur>();


	public Ouvrage(String unISBN, String unTitre, String unEditeur, GregorianCalendar uneDateEdition, Public unPublic) {
		this.titre = unTitre;
		this.editeur = unEditeur;
		this.dateEdition = uneDateEdition;
		this.ISBN = unISBN;
		this.public_1 = unPublic;	
	}

	
	public void lierExemplaire(Exemplaire unExemplaire) {
		this.exemplaire.put(unExemplaire.getNum(), unExemplaire);
	}


	public void lierAuteur(Auteur unAuteur) {
		this.auteur.add(unAuteur);
	}

	
	public String infoOuvrage() {
		String infoAuteur = "";
		String infoOuvrage = "\n";
		
		for(Auteur unAuteur : auteur) {
			infoAuteur += unAuteur.infoAuteur() + ", " ;
		}
		
		infoAuteur = infoAuteur.substring(0, infoAuteur.length() - 2);
		
		infoOuvrage += "      ******************************************\n";
		infoOuvrage += "      * ISBN : " + this.ISBN + "\n";
		infoOuvrage += "      * Titre : " + this.titre + "\n";
		infoOuvrage += "      * Auteur(s) : " + infoAuteur + "\n";
		infoOuvrage += "      * Editeur : " + this.editeur + "\n";
		infoOuvrage += "      * Public : " + this.public_1 + "\n";
		infoOuvrage += "      * Date d'edition : " + EntreesSorties.ecrireDate(this.dateEdition) + "\n";
		infoOuvrage += "      * Nombre d'exemplaire(s) : " + this.exemplaire.size() + "\n";
		infoOuvrage += "      ******************************************\n";
		
		return infoOuvrage;
	}

	
	public String getISBN() {
		return this.ISBN;
	}

	
	public String getTitre() {
		return this.titre;
	}
	
	
	public Public getPublic() {
		return this.public_1;
	}

	public Integer getNbEx() {
		return this.exemplaire.size();
	}
	public HashMap<String,Exemplaire> getExemplaires() {
		return this.exemplaire;
	}
	
	public Integer numExSuivant(){
		int i=1;
		while(i<=exemplaire.size() && exemplaire.get(i)!= null)
		{
			i++;
		}
		return i;
	}
}